import request from '@/utils/request'

/**
 * 角色管理请求类 | 提供与角色相关的 API 交互方法
 */
export abstract class RoleRequest {
  /** 新增角色 */
  static create(createDto: RoleType.Entity): Promise<string> {
    return request.post(`/system/role/create`, createDto)
  }

  /** 删除单个或者多个角色 */
  static delete(params: { roleIds: string }) {
    return request.delete('/system/role/delete', { params })
  }

  /** 更新角色信息 */
  static update(updateDto: RoleType.Entity): Promise<string> {
    return request.put(`/system/role/update`, updateDto)
  }

  /** 授权角色菜单权限 */
  static authPermission(authDto: RoleType.AuthPermission): Promise<string> {
    return request.post(`/system/role/authPermission`, authDto)
  }

  /** 查询角色的分页列表 */
  static findList(params: TableQueryParams<RoleType.Entity>): TableResult<RoleType.Entity> {
    return request.get('/system/role/list', { params })
  }

  /** 查询角色不分页列表 */
  static findAll(): Promise<RoleType.Entity[]> {
    return request.get('/system/role/all')
  }

  /** 根据角色 ID 查找角色信息 */
  static findOneById(params: { roleId: string }): Promise<RoleType.Entity> {
    return request.get('/system/role/detail', { params })
  }
}
